package br.com.fsa.aplication.Services;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import br.com.fsa.aplication.Database.CaminhaoDAO;
import br.com.fsa.aplication.Exception.ConectionException;
import br.com.fsa.aplication.Model.CaminhaoVO;
import br.com.fsa.aplication.Model.bean.Caminhao;
import br.com.fsa.aplication.Util.Traduzir;

public class CaminhaoService {
	CaminhaoDAO dao = new CaminhaoDAO();

	public HashMap salvar(HashMap dto) throws ConectionException {
		Object o = Traduzir.ObjetoValor(dto.get("objeto"));
		o = dao.save((Caminhao) o);
		dto.put("resposta", Traduzir.Entidade(o));
		return dto;

	}

	public List<CaminhaoVO> lista() throws ConectionException {
		List<Caminhao> o = dao.list();
		List<CaminhaoVO> resposta = new ArrayList<CaminhaoVO>();
		for (Caminhao l : o) {
			resposta.add((CaminhaoVO) Traduzir.Entidade(l));
		}
		return resposta;
	}

	public void remover(HashMap dto) throws ConectionException {
		Object o = Traduzir.ObjetoValor(dto.get("objeto"));
		dao.delete((Caminhao) o);
	}

	public void atualizar(HashMap dto) {
		Object o = Traduzir.ObjetoValor(dto.get("objeto"));
		dao.update((Caminhao) o);
	}

	public HashMap obterPorId(HashMap dto) throws ConectionException {
		dto.put("resposta", Traduzir.Entidade(dao.getById((Serializable) dto
				.get("objeto"))));
		return dto;
	}

	public List<CaminhaoVO> listarPorQuery() throws ConectionException {

		String consulta = "select c from Caminhao c where disponivel='Aguardando' or disponivel is null";
		List<Caminhao> o = dao.consultaHQL(consulta);
		List<CaminhaoVO> resposta = new ArrayList<CaminhaoVO>();

		for (Caminhao m : o) {
			m.setListaConhecimento(null);
			resposta.add((CaminhaoVO) Traduzir.Entidade(m));
		}

		return resposta;

	}

	public HashMap obterPorQuery(HashMap dto) throws ConectionException {

		String consulta = "select c from Caminhao c where veiculoID="
				+ dto.get("objeto");
		List<Caminhao> o = dao.consultaHQL(consulta);
		o.get(0).setListaConhecimento(null);
		Object resposta = Traduzir.Entidade(o.get(0));
		dto.put("resposta", resposta);
		return dto;

	}

}
